const INFO_KEY = 'hm_shopping_info'

// 获取个人信息
/**
 * 获取用户信息。
 * 该函数从本地存储中获取用户信息。如果本地存储中存在用户信息，则解析并返回该信息；
 * 如果不存在，则返回一个具有默认空令牌和用户ID的对象。
 * 使用本地存储来持久化用户信息，可以在用户关闭浏览器后再次访问时仍然保留这些信息，
 * 而不需要重新登录或重新获取信息。
 * @returns {Object} 返回一个对象，包含用户ID和令牌。如果本地存储中没有用户信息，
 * 则对象的令牌和用户ID都是空字符串。
 */
export const getInfo = () => {
  // 从本地存储中获取用户信息
  const result = localStorage.getItem(INFO_KEY)
  // 如果本地存储中有信息，则解析并返回；否则返回一个默认对象
  return result ? JSON.parse(result) : { token: '', userId: '' }
}

// 设置个人信息
/**
 * 将信息存储到本地存储空间中。
 * 本函数用于将给定的信息对象持久化存储在浏览器的本地存储空间里。
 * 信息对象被转换为JSON字符串后存储，以便于后续读取和使用。
 * 使用本地存储的好处是，即使用户关闭了浏览器，之前存储的信息也能被保留下来。
 * @param {Object} info - 需要存储的信息对象。这个对象应该是一个JavaScript对象，
 *                        它将被转换为JSON字符串后存储。
 */
export const setInfo = (info) => {
  localStorage.setItem(INFO_KEY, JSON.stringify(info))
}

// 移除个人信息
/**
 * 从本地存储中移除特定信息
 * 该函数用于从浏览器的本地存储中移除一个指定的关键值对。它不接受任何参数，
 * 也不返回任何值。它的作用是单纯地删除与INFO_KEY相关联的数据。
 * @remarks
 * 此函数是模块导出的一部分，可以被其他模块导入并使用，以执行本地存储的清理工作。
 */
export const removeInfo = () => {
  localStorage.removeItem(INFO_KEY)
}
const HISTORY_KEY = 'hm_history_list'

/**
 * 获取历史记录列表
 * 该函数用于从本地存储中获取之前保存的历史记录列表。如果本地存储中不存在历史记录，
 * 则返回一个空数组。
 * @returns {Array} 返回一个包含历史记录的数组，如果不存在历史记录，则返回空数组。
 */
export const getHistoryList = () => {
  // 从本地存储中获取历史记录的JSON字符串
  const result = localStorage.getItem(HISTORY_KEY)
  // 如果存在历史记录，则解析为数组并返回；否则返回空数组
  return result ? JSON.parse(result) : []
}

/**
 * 将数组存储到本地存储中作为历史记录列表。
 * 本函数用于将给定的数组存储到浏览器的本地存储（localStorage）中，指定的键名为HISTORY_KEY。
 * 这样做的目的是为了保存用户的历史操作记录，以便用户可以在后续的使用中访问或参考这些记录。
 * @param {Array} arr - 要存储的历史记录数组。这个数组应该包含用户执行操作的记录，具体结构和内容根据应用需求而定。
 * 注意：由于localStorage对数据的存储形式有限制，这里使用JSON.stringify将数组转换为字符串进行存储。
 * 这样做的好处是兼容性好，而且可以方便地存储复杂的数据结构。
 */
export const setHistoryList = (arr) => {
  localStorage.setItem(HISTORY_KEY, JSON.stringify(arr))
}
